BlueBird
陈皓叔的程序员练级指南的第一个作业
作业要求: #
实践项目:
无论你用 Python,还是 Node.js,还是 PHP,我希望你能做一个非常简单的 Blog 系统,或是 BBS 系统,需要支持如下功能:
- 用户登录和注册(不需密码找回)。
- 用户发贴(不需要支持富文本,只需要支持纯文本)。
- 用户评论(不需要支持富文本,只需要支持纯文本)。
你需要从前端一直做到后端,也就是说,从 HTML/CSS/JavaScript,到后面的 PHP(Python/Node.js),再到数据库。这其中需要你查阅很多的知识。
这里有几个技术点你需要关注一下。
- 用户登录时的密码不应该保存为明文,应该用 MD5+Salt 来保存(关于这个是什么,希望你能自行 Google)。
- 用户登录后,对于用户自己的贴子可以有“重新编辑”或 “删除”的功能,但是无权编辑或删除其它用户的贴子。
- 数据库的设计,你需要三张表:用户表、文章表和评论表,它们之间是怎么关联的,你需要学习一下。这里有个 PHP 的 blog 教你怎么建表,你可以 前往一读 。
如果你有兴趣,你可以顺着这个小项目,研究一下下面这几个事。
上面这些东西,不是什么高深的东西,但是可以让你从中学到很多。相信你只需要自己 Google 一下就能搞定。
我的计划: #
做一个类似 Twitter 的应用。
1. 技术栈选择: #
- 前端:Vue.js, TailwindCSS
- 后端:Java (可以使用 Spring Boot 框架,因为它集成了很多有用的功能并且适合构建 Web 项目)
- 数据库:MySQL
2. 功能设计: #
用户模块: #
- 注册:允许用户创建账号。需要用户名、密码(密码会被加盐和哈希后保存)。
- 登录:通过用户名和密码验证用户。
- 用户个人主页:展示该用户的所有帖子。
- 图片验证码:在登录和注册页面添加验证码,增加安全性。
帖子模块: #
- 发帖:用户可以发布纯文本帖子,并可以选择上传图片。
- 编辑:用户可以编辑自己的帖子。
- 删除:用户可以删除自己的帖子。
- 查看:每个帖子下面都可以看到相关评论。
评论模块: #
- 评论:用户可以在任何帖子下发表评论。
- 删除:用户可以删除自己的评论。
3. 数据库设计: #
- 用户表:
- user_id (主键)
- username (唯一)
- hashed_password (使用 MD5+Salt)
- 帖子表:
- post_id (主键)
- user_id (外键,与用户表关联)
- content (帖子内容)
- post_date (发布日期)
- image_path (存储上传的图片路径)
- 评论表:
- comment_id (主键)
- post_id (外键,与帖子表关联)
- user_id (外键,与用户表关联)
- content (评论内容)
- comment_date (发布日期)
4. 安全性考虑: #
- 密码安全性:使用 MD5 加密配合盐值 (Salt) 对密码进行哈希,确保数据库中存储的是哈希后的密码。
- 防止 XSS 攻击:过滤用户提交的内容,确保不包含 HTML 或 JavaScript 代码。
- 防范 SQL 注入:使用参数化查询或 ORM 工具来处理用户输入,确保不执行恶意的 SQL 代码。
- 限制用户权限:例如,新用户必须经过验证才能发帖或评论。
更新于: 2023 年 10 月 11 日